package com.Book.test_1_25_springmvcbook.Controller;

import com.Book.test_1_25_springmvcbook.Service.UserService;
import com.Book.test_1_25_springmvcbook.constant.Constant;
import com.Book.test_1_25_springmvcbook.model.UserInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpSession;


// 登录
@RequestMapping("/user")
@RestController
public class UserController {
    @Autowired
    private UserService userService;
    @RequestMapping("/login")
    public Boolean login(String userName, String password, HttpSession session){
        // 注意参数的大小写是一定要区分的, 按照定义的接口文档的来

        // 1. 校验参数
        if(!StringUtils.hasLength(userName) || ! StringUtils.hasLength(password)){
            return  false;
        }
        // 2. 验证账号密码是否正确

        // 1)根据用户名去查找用户信息
        UserInfo userInfo = userService.getUserInfoByName(userName);
        // 2) 比对密码是否正确
        if(userInfo==null || userInfo.getId()<=0){
            return false;
        }
        if(password.equals(userInfo.getPassword())){
            // 密码正确
            // 存Session
            userInfo.setPassword("");
            //session.setAttribute("userName",userInfo);
            //session.setAttribute("session_user_key",userInfo); //*
            session.setAttribute(Constant.SESSION_USER_KEY,userInfo); //*
            return true;
        }
        /*if("admin".equals(userName) && "admin".equals(password)){
            // 账号密码正确
            // "admin".equals(userName) && "admin".equals(password)
            // 这样写是为了防止 userName 为 null 的 情况, 这样会报空指针异常
            // 这样是一个开发习惯

            // 存Session
            session.setAttribute("userName",userName);
            return true;
        }*/
        return false;


    }
}
